package Test;

import java.util.HashMap;
import java.util.Map;

import javax.jms.Session;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * 二级控制器
 *    负责业务逻辑的处理
 *    1.不用实现Controller接口
 *    2.在一个Controller类里面可以添加多个处理方法
 *       这些方法的方法名可以自定义，返回值可以是ModelAndView或者是String
 *       http://ip:port/springmvc02/hello
 * @author tarena
 *
 */
//控制器
@Controller("hc")
public class HelloController {
	//请求
	@RequestMapping("/hello.do")
	public String toHello(){
		System.out.println("HelloController的toHello方法");
		return "hello";
	}
	@RequestMapping("/toLogin.do")
	public String toLogin(){
		System.out.println("toLogin方法...");
		return "login";
	}
	@RequestMapping("/login.do")
	public String login(HttpServletRequest req){
		System.out.println("login方法...");
		String username=req.getParameter("username");
		String pwd=req.getParameter("pwd");
		System.out.println("username:"+username+","+"password:"+pwd);
		return "success";
		
	}
	@RequestMapping("/login2.do")
	public String lonin2(String username,String pwd){//这里的username，pwd是jsp文件中的那么属性中的值
		System.out.println("login2方法...");
		System.out.println("username:"+username+","+"pwd"+pwd);
		
		return "success";
	}

	@RequestMapping("/login3.do")
	public String login3(User user){
		System.out.println("login3方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		return "success";
	}
	
	
	
	
	
	@RequestMapping("/login4.do")
	//向页面传值的第一种方式：使用request绑定数据
	public String login4(User user,HttpServletRequest req){
		System.out.println("login4方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		req.setAttribute("username", user.getUsername());
		// 默认情况下，使用转发的方式来跳转页面
		return "success";		
	}
	@RequestMapping("/login5.do")
	public ModelAndView login5(User user){
		//向页面传值的第二种方式,使用ModelAndView
		System.out.println("login5方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		//ModelAndView(String viewName,Map date)
		Map<String,Object> date=new HashMap<String,Object>();
		//相当于执行了request.setAttribute("user",user)
		date.put("user", user);
		return new ModelAndView("success",date);
	}
	@RequestMapping("/login6.do")
	//向页面传值的第三种方式，使用ModelMap
	public String login6(User user,ModelMap date){
		System.out.println("login6方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		//相当于request.setAttribute("user",user)
		date.addAttribute("user",user);
		return "success";
	}
	@RequestMapping("/login7.do")
	//向页面传值的第四种方式：使用session绑定数据
	public String login7(User user,HttpSession session){
		System.out.println("login7方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		session.setAttribute("user", user);
		return "success";
	}
	
	/**
	 * 重定向
	 * @param user
	 * @param session
	 * @return
	 */
	@RequestMapping("/login8.do")
	public String login8(User user){
		System.out.println("login8方法...");
		System.out.println(user.getUsername()+","+user.getPwd());
		if("Tom".equals(user.getUsername())){
			//不能直接重定向到jsp文件，但是在Servlet是可以重定向到jsp的
			return "redirect:toSuccess.do";
		}
		return "login";
	}
	@RequestMapping("/toSuccess.do")
	public String toSuccess(){
		return "success";
		
	}
	
	
}
